#ifndef __SWEI_CACHE_H
#define __SWEI_CACHE_H

#include <stdint.h>
#include "swei_common.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef enum {
    INSERT_FRONT,   /* 前插，优先发送的消息 */
    INSERT_BACK,    /* 后插，顺序接收的消息 */
}insert_way_e;

typedef struct {
    uint32_t in_cnt;
    uint32_t out_cnt;
}cache_record_t ;

int32_t swei_cache_peek(swei_datatype_t *dat);
int32_t swei_cache_push(swei_datatype_t *dat, uint8_t insert_type);
int32_t swei_cache_pop(swei_datatype_t *dat, uint8_t is_match);
bool swei_cache_is_empty(void);
bool swei_cache_is_full(void);
void swei_cache_load(void);
void swei_cache_flush(void);

cache_record_t *swei_cache_get_rec(void);
int32_t swei_cache_item_get(void);
void swei_cache_clear(void);



int32_t swei_base_cache_push(swei_datatype_t *dat);
int32_t swei_base_cache_pop(swei_datatype_t *dat);

#ifdef __cplusplus
}
#endif

#endif // __SWEI_CACHE_H


